package com.hylu.springboot.system.service.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.hylu.springboot.system.dao.MenuMapper;
import com.hylu.springboot.system.pojo.po.MenuDO;
import com.hylu.springboot.system.service.MenuService;
import org.springframework.stereotype.Service;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;


@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, MenuDO> implements MenuService {

    /**
     * 查询所有菜单目录，无权限
     */
    @Override
    public Map<MenuDO,List<MenuDO>> queryMenuDefault() {
        Map<MenuDO,List<MenuDO>> menusMap= new LinkedHashMap<>();

        List<MenuDO> menuDOList = this.queryMenu();

        List<MenuDO> menuDOS;
        for (MenuDO menuDO : menuDOList) {
            menuDOS = this.queryMenuItemByMenuId(menuDO.getMenuId());
            menusMap.put(menuDO,menuDOS);
        }
        return menusMap;
    }

    /**
     * 查询所有的目录
     *
     * @return
     */
    private List<MenuDO> queryMenu() {
        EntityWrapper<MenuDO> menuWrapper = new EntityWrapper<>();
        menuWrapper.eq("type", 0);
        List<MenuDO> menuDOList = baseMapper.selectList(menuWrapper);
        return menuDOList;
    }

    /**
     * 查询目录下的所有菜单
     *
     * @param menuId
     * @return
     */
    private List<MenuDO> queryMenuItemByMenuId(Long menuId) {
        EntityWrapper<MenuDO> menuWrapper = new EntityWrapper<>();
        menuWrapper.eq("type", 1);
        menuWrapper.eq("parent_id", menuId);
        List<MenuDO> menuDOList = baseMapper.selectList(menuWrapper);
        return menuDOList;
    }
}
